#include "Thread.hpp"
#include <iostream>
#include <vector>
#include <unistd.h>

using namespace ThreadModule;

// 这个函数与下列Thread构造函数中的传递的lamda表达式相同
void task()
{
    while(true)
    {
        std::cout << "I am new thread" << std::endl;
        sleep(1);
    }
}

int main()
{
    // 1. 创建线程结构体对象，使用lamda表达式传递构造函数参数
    Thread t([](){
        // 这里面的内容就是线程要执行的任务
        while(true)
        {
            std::cout << "I am new thread" << std::endl;
            sleep(1);
        }
    });
    // t.Detach();
    // sleep(5);

    t.Start();
    sleep(5);

    t.Detach();
    sleep(5);

    t.Stop();
    sleep(5);

    t.Join();
    // // 1. 创建多线程
    // std::vector<Thread> threads;
    // for (int i = 0; i < 10; i++)
    // {
    //     threads.emplace_back([]()
    //     {
    //         while(true)
    //         {
    //             char name[128];
    //             pthread_getname_np(pthread_self(), name, sizeof(name));
    //             std::cout << "I am new thread: " << name << std::endl;
    //             sleep(1);
    //         }
    //     });
    // }
    // for (auto &thread : threads)
    // {
    //     thread.Start();
    // }
    // for (auto& thread : threads)
    // {
    //     thread.Join();
    // }

    return 0;
}